/**
 * 方法是语句的结合，是为了完成某件事情而存在的。可以有结果，也可以不返回结果。
 * 比如计算两个数字的和，需要得到计算后的结果，就需要返回值。比如想打印某些字符到控制台，只打印就行，不需要返回。
 */

/**
 * 方法的定义和引用
 * [返回值类型] 方法名称([参数类型 args]) {  //返回值类型，可以是引用类型，也可以是基本类型。也可以用void表示没有返回值。
 *                                      //方法名称，和标识符的规则一致，和变量一样，小写字母开头，
 *                                      //如果方法有多个单词组成,则遵循驼峰命名规则，即首字母小写，后面的单词每个单词首字母大写，test1Test2Test3,getNameById.
 *                                      //参数，调用方法时传递给方法的，让方法使用的
 *     方法体;       //具体要干的事情
 *     return 结果；  //方法执行的结果，通过return返回，void返回值类型不用返回，可以省略return，或者写return后面不跟任何东西，return;
 *                   //非void方法中，return不一定放在最后，但要保证在任何情况下都有返回值。方法一遇到return即返回不再执行。
 * }
 */
public class Methods {

     public static void main(String[] args) {  //void表示没有返回值，main是方法的名字，()括号里面是要传给方法的参数及类型
              for (int i = 0; i < 10; i++) {
                  if(i==6){
                      return;  //使用return直接结束方法，无论return在循环嵌套里还是if嵌套里
                              //return和break的区别是什么，break只是跳出循环，循环后面的语句还要执行的
                 }
              }
              System.out.println("淦"); //此语句不会执行，因为for循环还没结束，遇到return直接结束方法了
          }




    int test(){  //基本类型的方法，int是基本类型，返回值是int类型
        return 6;
    }

    String str(){  //引用类型的方法，返回一个对象引用，String 是引用类型
        test(); //方法之间可以相互调用
        str();  //可以调用自身，叫递归调用，很危险，会死循环（JVM有保护机制，占用内存大小有限制），要写好判断条件
        return "str";

    }

    void test2(){
        //没有返回值，不写return
        return; //或者写return;
    }

    int getNameById(int a){
        if(a>0){
            return 1;  //保证在任何情况下都有返回
        }
        else{
            return 2;  //保证在任何情况下都有返回
        }
    }
}
